/**
 * 输出结果判断-闭包&变量提升
 */

// 1----------------------------------------------
(function () {
  var x = y = 1; // 从左往右执行，y没有var，所以是全局变量，x是局部变量

})()
var z
// console.log(x); // ReferenceError: x is not defined
console.log(y); // 1
console.log(z); // undefined

// 2----------------------------------------------
var a, b
(function () {
  console.log(a); // undefined
  console.log(b); // undefined
  var a = (b = 3) // 从右往左执行，b没有var，所以是全局变量，a是局部变量
  console.log(a) // 3
  console.log(b) // 3
})()
console.log(a) // undefined
console.log(b) // 3
/*
undefined
undefined
3
3
undefined
3  */

// 3----------------------------------------------
var a
if (true) {
  /*变量提升：函数 > 变量
  function a(){}
  a=1;*/
  a = 1

  function a() {
  }

  a = 21
  console.log(a); // 21
}
console.log(a); // 1

// 4----------------------------------------------
var friendName = 'world'
(function () {
  // 变量提升 var friendName
  if (typeof friendName === 'undefined') {
    var friendName = 'Jack' // 变量提升
    console.log('Goodbye ' + friendName)
  } else {
    console.log('Hello ' + friendName)
  }
})()
// Goodbye Jack

// 5----------------------------------------------
function fn1() {
  console.log('Fn1')
}

var fn2

fn1() // Fn1
fn2() // TypeError: fn2 is not a function
fn2 = function () {
  console.log('fn2')
}
fn2() // fn2


// 6----------------------------------------------


